home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / ewl / examples / ewl_theme_test.c < prev    next >
C/C++ Source or Header  |  2006-01-09  |  13KB  |  412 lines

  1. #include "ewl_test.h"
  2.  
  3. static Ewl_Widget *notebook;
  4. static char *theme_list_dir = PACKAGE_DATA_DIR "/themes/";
  5.  
  6. static void
  7. __destroy_theme_test_window(Ewl_Widget * w, void *ev_data __UNUSED__,
  8.                     void *user_data __UNUSED__)
  9. {
  10.     ewl_widget_destroy (w);
  11. }
  12.  
  13. static void
  14. __select_theme (Ewl_Widget * w, void *ev_data __UNUSED__,
  15.                 void *user_data __UNUSED__)
  16. {
  17.         Ewl_Widget *cell;
  18.     Ewl_Widget *text;
  19.     char       *theme_name;
  20.     char       *theme_filename;
  21.     char       *ext;
  22.     int         len1;
  23.     int         len2;
  24.     int         i;
  25.     
  26.     ewl_container_child_iterate_begin (EWL_CONTAINER (w));
  27.     cell = ewl_container_child_next (EWL_CONTAINER (w));
  28.     
  29.     ewl_container_child_iterate_begin (EWL_CONTAINER (cell));
  30.     text = ewl_container_child_next (EWL_CONTAINER (cell));
  31.     
  32.     theme_name = ewl_label_text_get (EWL_LABEL (text));
  33.     ext = ".edj";
  34.     
  35.     len1 = strlen (theme_list_dir);
  36.     len2 = strlen (theme_name);
  37.     theme_filename = (char *)malloc (sizeof (char) * (len1 + len2 + 5));
  38.     for (i = 0 ; i < len1 ; i++)
  39.       theme_filename[i] = theme_list_dir[i];
  40.     for (i = 0 ; i < len2 ; i++)
  41.       theme_filename[i + len1] = theme_name[i];
  42.     for (i = 0 ; i < 4 ; i++)
  43.       theme_filename[i + len1 + len2] = ext[i];
  44.     theme_filename[len1 + len2 + 4] = '\0';
  45.     
  46.     ewl_theme_data_str_set (notebook,
  47.                 "/file", theme_filename);
  48.     
  49.     free (theme_filename);
  50. }
  51.  
  52. static void
  53. widgets_build(void)
  54. {
  55.         Ewl_Widget *misc;
  56.     Ewl_Widget *item;
  57.     Ewl_Widget *tab;
  58.     Ewl_Widget *vbox;
  59.     char       *str;
  60.     char       *str_col[2];
  61.     
  62.     /* Notebook */
  63.     notebook = ewl_notebook_new ();
  64.     ewl_object_fill_policy_set(EWL_OBJECT(notebook), EWL_FLAG_FILL_ALL);
  65.     ewl_notebook_tabs_position_set (EWL_NOTEBOOK(notebook),
  66.                     EWL_POSITION_TOP);
  67.     ewl_widget_appearance_set (notebook, "window");
  68.     
  69.     /* First page: buttons */
  70.     tab = ewl_text_new();
  71.     ewl_text_text_set(EWL_TEXT(tab), "Buttons");
  72.     ewl_widget_show (tab);
  73.     
  74.     vbox = ewl_vbox_new ();
  75.     ewl_widget_show (vbox);
  76.     
  77.     misc = ewl_button_new();
  78.     ewl_button_label_set(EWL_BUTTON(misc), "Normal button");
  79.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  80.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  81.     ewl_widget_show (misc);
  82.     
  83.     misc = ewl_hseparator_new ();
  84.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  85.     ewl_widget_show (misc);
  86.     
  87.     misc = ewl_checkbutton_new();
  88.     ewl_button_label_set(EWL_BUTTON(misc), "Check button");
  89.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  90.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  91.     ewl_widget_show (misc);
  92.     
  93.     misc = ewl_hseparator_new ();
  94.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  95.     ewl_widget_show (misc);
  96.     
  97.     misc = ewl_radiobutton_new();
  98.     ewl_button_label_set(EWL_BUTTON(misc), "Radio button");
  99.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  100.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  101.     ewl_widget_show (misc);
  102.     
  103.     ewl_notebook_page_append (EWL_NOTEBOOK(notebook), tab, vbox);
  104.     
  105.     /* Second page: numerical/text entries */
  106.     tab = ewl_text_new();
  107.     ewl_text_text_set(EWL_TEXT(tab), "Numerical & text entries");
  108.     ewl_widget_show (tab);
  109.     
  110.     vbox = ewl_vbox_new ();
  111.     ewl_widget_show (vbox);
  112.     
  113.     misc = ewl_entry_new();
  114.     ewl_text_text_set(EWL_TEXT(misc), "Normal entry");
  115.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  116.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  117.     ewl_widget_show (misc);
  118.     
  119.     misc = ewl_hseparator_new ();
  120.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  121.     ewl_widget_show (misc);
  122.     
  123.     misc = ewl_password_new ();
  124.     ewl_password_text_set(EWL_PASSWORD(misc), "Password entry");
  125.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  126.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  127.     ewl_widget_show (misc);
  128.     
  129.     misc = ewl_hseparator_new ();
  130.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  131.     ewl_widget_show (misc);
  132.     
  133.     misc = ewl_spinner_new ();
  134.     ewl_spinner_digits_set (EWL_SPINNER (misc), 0);
  135.     ewl_spinner_min_val_set (EWL_SPINNER (misc), 0);
  136.     ewl_spinner_max_val_set (EWL_SPINNER (misc), 1024);
  137.     ewl_spinner_step_set (EWL_SPINNER (misc), 1.0);
  138.     ewl_spinner_value_set (EWL_SPINNER (misc), 15.0);
  139.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  140.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  141.     ewl_widget_show (misc);
  142.     
  143.     misc = ewl_hseparator_new ();
  144.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  145.     ewl_widget_show (misc);
  146.     
  147.     misc = ewl_hseeker_new ();
  148.     ewl_seeker_range_set (EWL_SEEKER (misc), 10);
  149.     ewl_seeker_step_set (EWL_SEEKER (misc), 1.0);
  150.     ewl_seeker_value_set (EWL_SEEKER (misc), 15.0);
  151.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_LEFT);
  152.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  153.     ewl_widget_show (misc);
  154.     
  155.     ewl_notebook_page_append (EWL_NOTEBOOK(notebook), tab, vbox);
  156.     
  157.     /* Third page: menus */
  158.     tab = ewl_text_new();
  159.     ewl_text_text_set(EWL_TEXT(tab), "Menus");
  160.     ewl_widget_show (tab);
  161.     
  162.     vbox = ewl_vbox_new ();
  163.     ewl_widget_show (vbox);
  164.     
  165.     misc = ewl_imenu_new ();
  166.     ewl_menu_item_text_set(EWL_MENU_ITEM(misc), "Imenu");
  167.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  168.     ewl_widget_show (misc);
  169.     
  170.     item = ewl_menu_item_new ();
  171.     ewl_menu_item_text_set(EWL_MENU_ITEM(item), "dia-diagram.png");
  172.     ewl_menu_item_image_set(EWL_MENU_ITEM(item), "image");
  173.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  174.     ewl_widget_show (item);
  175.     
  176.     item = ewl_separator_new ();
  177.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  178.     ewl_widget_show (item);
  179.     
  180.     item = ewl_menu_item_new ();
  181.     ewl_menu_item_text_set(EWL_MENU_ITEM(item), "label");
  182.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  183.     ewl_widget_show (item);
  184.     
  185.     misc = ewl_hseparator_new ();
  186.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  187.     ewl_widget_show (misc);
  188.     
  189.     misc = ewl_menu_new ();
  190.     ewl_menu_item_text_set(EWL_MENU_ITEM(misc), "Menu");
  191.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  192.     ewl_widget_show (misc);
  193.     
  194.     item = ewl_menu_item_new ();
  195.     ewl_menu_item_image_set(EWL_MENU_ITEM(item), "dia-diagram.png");
  196.     ewl_menu_item_text_set(EWL_MENU_ITEM(item), "image");
  197.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  198.     ewl_widget_show (item);
  199.     
  200.     item = ewl_separator_new ();
  201.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  202.     ewl_widget_show (item);
  203.     
  204.     item = ewl_menu_item_new ();
  205.     ewl_menu_item_text_set(EWL_MENU_ITEM(item), "label");
  206.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  207.     ewl_widget_show (item);
  208.     
  209.     misc = ewl_hseparator_new ();
  210.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  211.     ewl_widget_show (misc);
  212.     
  213.     misc = ewl_combo_new ("Combo entry");
  214.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  215.     ewl_widget_show (misc);
  216.     
  217.     item = ewl_menu_item_new ();
  218.     ewl_menu_item_image_set(EWL_MENU_ITEM(item), "dia-diagram.png");
  219.     ewl_menu_item_text_set(EWL_MENU_ITEM(item), "image");
  220.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  221.     ewl_widget_show (item);
  222.     
  223.     item = ewl_separator_new ();
  224.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  225.     ewl_widget_show (item);
  226.     
  227.     item = ewl_menu_item_new ();
  228.     ewl_menu_item_text_set(EWL_MENU_ITEM(item), "label");
  229.     ewl_container_child_append (EWL_CONTAINER (misc), item);
  230.     ewl_widget_show (item);
  231.     
  232.     ewl_notebook_page_append (EWL_NOTEBOOK(notebook), tab, vbox);
  233.     
  234.     /* Fourth page: List/tree */
  235.     tab = ewl_text_new();
  236.     ewl_text_text_set(EWL_TEXT(tab), "List & tree");
  237.     ewl_widget_show (tab);
  238.     
  239.     vbox = ewl_vbox_new ();
  240.     ewl_widget_show (vbox);
  241.     
  242.     str = "List";
  243.     misc = ewl_tree_new (1);
  244.     ewl_tree_headers_set (EWL_TREE (misc), &str);
  245.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  246.     ewl_widget_show (misc);
  247.     
  248.     str = "Row 1";
  249.     item = ewl_tree_text_row_add (EWL_TREE (misc), NULL, &str);
  250.     str = "Row 2";
  251.     item = ewl_tree_text_row_add (EWL_TREE (misc), NULL, &str);
  252.     str = "Row 3";
  253.     item = ewl_tree_text_row_add (EWL_TREE (misc), NULL, &str);
  254.     
  255.     misc = ewl_hseparator_new ();
  256.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  257.     ewl_widget_show (misc);
  258.     
  259.     str_col[0] = "Tree";
  260.     str_col[1] = "Column";
  261.     misc = ewl_tree_new (2);
  262.     ewl_tree_headers_set (EWL_TREE (misc), str_col);
  263.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  264.     ewl_widget_show (misc);
  265.     
  266.     str_col[0] = "row1";
  267.     str_col[1] = "label";
  268.     item = ewl_tree_text_row_add (EWL_TREE (misc), NULL, str_col);
  269.     str_col[0] = "sub row";
  270.     str_col[1] = "label";
  271.     item = ewl_tree_text_row_add (EWL_TREE (misc), EWL_ROW (item), str_col);
  272.     
  273.     str_col[0] = "row2";
  274.     str_col[1] = "label";
  275.     item = ewl_tree_text_row_add (EWL_TREE (misc), NULL, str_col);
  276.     str_col[0] = "sub row";
  277.     str_col[1] = "label";
  278.     item = ewl_tree_text_row_add (EWL_TREE (misc), EWL_ROW (item), str_col);
  279.     
  280.     ewl_notebook_page_append (EWL_NOTEBOOK(notebook), tab, vbox);
  281.     
  282.     /* Fifth page: Misc */
  283.     tab = ewl_text_new();
  284.     ewl_text_text_set(EWL_TEXT(tab), "Misc");
  285.     ewl_widget_show (tab);
  286.     
  287.     vbox = ewl_vbox_new ();
  288.     ewl_widget_show (vbox);
  289.     
  290.     misc = ewl_hpaned_new ();
  291.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  292.     ewl_widget_show (misc);
  293.  
  294.     item = ewl_text_new();
  295.     ewl_text_text_set(EWL_TEXT(item), "left");
  296.     ewl_container_child_append(EWL_CONTAINER(misc), item);
  297.     ewl_widget_show (item);
  298.  
  299.     item = ewl_text_new();
  300.     ewl_text_text_set(EWL_TEXT(item), "right");
  301.     ewl_container_child_append(EWL_CONTAINER(misc), item);
  302.     ewl_widget_show (item);
  303.     
  304.     misc = ewl_hseparator_new ();
  305.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  306.     ewl_widget_show (misc);
  307.     
  308.     misc = ewl_button_new();
  309.     ewl_button_label_set(EWL_BUTTON(misc), "Tooltip");
  310.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  311.     ewl_widget_show (misc);
  312.     
  313.     ewl_notebook_page_append (EWL_NOTEBOOK(notebook), tab, vbox);
  314. }
  315.  
  316. void
  317. __create_theme_test_window(Ewl_Widget * w, void *ev_data __UNUSED__,
  318.                         void *user_data __UNUSED__)
  319. {
  320.         Ewl_Widget    *theme_win;
  321.         Ewl_Widget    *hbox;
  322.         Ewl_Widget    *vbox;
  323.         Ewl_Widget    *list;
  324.         Ewl_Widget    *row;
  325.         Ewl_Widget    *misc;
  326.         DIR           *rep;
  327.         struct dirent *lecture;
  328.         char          *name;
  329.         char          *list_header;
  330.         int            len;
  331.  
  332.         theme_win = ewl_window_new ();
  333.         ewl_window_title_set (EWL_WINDOW(theme_win), "Theme Viewer Test");
  334.         ewl_window_name_set (EWL_WINDOW(theme_win), "EWL Test Application");
  335.         ewl_window_class_set (EWL_WINDOW(theme_win), "EFL Test Application");
  336.         ewl_callback_append (theme_win,
  337.                  EWL_CALLBACK_DELETE_WINDOW,
  338.                  EWL_CALLBACK_FUNCTION (__destroy_theme_test_window),
  339.                  NULL);
  340.  
  341.     if (w)
  342.                   ewl_callback_append (theme_win,
  343.                      EWL_CALLBACK_DELETE_WINDOW,
  344.                      EWL_CALLBACK_FUNCTION (__destroy_theme_test_window),
  345.                      NULL);
  346.     else
  347.             ewl_callback_append (theme_win,
  348.                      EWL_CALLBACK_DELETE_WINDOW,
  349.                      EWL_CALLBACK_FUNCTION (__close_main_window),
  350.                      NULL);
  351.     
  352.         hbox = ewl_hbox_new ();
  353.         ewl_object_fill_policy_set (EWL_OBJECT(hbox),
  354.                     EWL_FLAG_FILL_SHRINK);
  355.         ewl_container_child_append (EWL_CONTAINER (theme_win), hbox);
  356.         ewl_widget_show (hbox);
  357.  
  358.         list_header = "Theme name";
  359.         list = ewl_tree_new (1);
  360.         ewl_tree_headers_set (EWL_TREE (list), &list_header);
  361.         ewl_object_padding_set (EWL_OBJECT (list), 6, 3, 6, 6);
  362.         ewl_object_fill_policy_set (EWL_OBJECT(list),
  363.                     EWL_FLAG_FILL_SHRINK);
  364.     ewl_container_child_append (EWL_CONTAINER (hbox), list);
  365.     ewl_widget_show (list);
  366.     
  367.     rep = opendir (theme_list_dir);
  368.     while ((lecture = readdir(rep))) {
  369.             name = lecture->d_name;
  370.         len = strlen (name);
  371.         if ((len >= 4) && (strcmp (name + len - 4, ".edj") == 0)) {
  372.                 char *str;
  373.  
  374.             str = malloc(len - 3);
  375.             if (str) {
  376.                 snprintf(str, len - 3, "%s", name);
  377.                 row = ewl_tree_text_row_add(EWL_TREE (list),
  378.                                 NULL, &str);
  379.                 ewl_callback_append(row,
  380.                             EWL_CALLBACK_CLICKED,
  381.                             EWL_CALLBACK_FUNCTION(__select_theme),
  382.                             NULL);
  383.                 free (str);
  384.             }
  385.         }
  386.     }
  387.     
  388.     misc = ewl_vseparator_new ();
  389.     ewl_container_child_append (EWL_CONTAINER (hbox), misc);
  390.     ewl_widget_show (misc);
  391.     
  392.     vbox = ewl_vbox_new ();
  393.     ewl_object_padding_set (EWL_OBJECT (vbox), 3, 6, 6, 6);
  394.     ewl_container_child_append (EWL_CONTAINER (hbox), vbox);
  395.     ewl_widget_show (vbox);
  396.     
  397.     misc = ewl_text_new();
  398.     ewl_text_text_set(EWL_TEXT(misc), "Theme Visualization");
  399.     ewl_object_alignment_set (EWL_OBJECT (misc), EWL_FLAG_ALIGN_CENTER);
  400.     ewl_object_fill_policy_set(EWL_OBJECT (misc), EWL_FLAG_FILL_NONE);
  401.     ewl_container_child_append (EWL_CONTAINER (vbox), misc);
  402.     ewl_widget_show (misc);
  403.     
  404.     widgets_build ();
  405.     ewl_container_child_append (EWL_CONTAINER (vbox), notebook);
  406.     ewl_widget_show (notebook);
  407.     
  408.     ewl_widget_show (theme_win);
  409. }
  410.  
  411.  
  412.